#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> p(n), a(n), b(n);
    for (int i = 0; i < n; ++i)
        cin >> p[i] >> a[i] >> b[i];

    const int m = 1001;

    //记 `dp[i][j]` 表示从接收第 i 个礼物开始，当前情绪值为 j 时，向后接收所有礼物后的最终的情绪值，
    vector<vector<int> > dp(n + 1, vector<int>(m));//n+1行  m列
    for (int i = 0; i < m; ++i) dp[n][i] = i;
    for (int i = n - 1; i >= 0; --i) {
        for (int j = 0; j < m; ++j) {

            int nj;
            if (j <= p[i]) nj = j + a[i];
            else nj = max(0, j - b[i]);

            dp[i][j] = dp[i + 1][nj];
        }
    }
    //然后记录一下 b的前缀和，二分查找第一个将心情减到500及一下的位置即可
    vector<int> preS(n + 1);
    for (int i = 0; i < n; ++i) preS[i + 1] = preS[i] + b[i];

    int q;
    cin >> q;
    while (q--) {
        int x;
        cin >> x;
        int ans;
        if (x < m) {
            ans = dp[0][x];
        } else {
            int i = upper_bound(preS.begin(), preS.begin() + n, x - m) - preS.begin();
            x -= preS[i];
            if (i < n) ans = dp[i][x];
            else ans = x;
        }
        cout << ans << '\n';
    }

    return 0;
}
